package 集合.TEST;

import java.util.*;
import java.util.function.BiConsumer;

public class test5 {
    /*
    定义一个Map集合，键用来表示省份名称province，值表示city，但是市会有多个，添加完毕后，遍历结果如下
    江苏省=南京市，扬州市，苏州市，无锡市，常州市
    湖北省=武汉市，孝感市，十堰市，宜昌市，鄂州市
    河北省=石家庄市，唐山市，邢台市，保定市，张家口市
    思路：对于有多个的市这种可以看做是一个单列集合。
    作重要的是按照模版遍历，可以使用StringBuilder/StringJoiner的形式
     */
    public static void main(String[] args) {
//        创建集合
        ArrayList<String>list=new ArrayList<>();
        list.add("江苏省");
        list.add("湖北省");
        list.add("河北省");
//        再次创建集合，将市添加到里面
        ArrayList<String> city1=new ArrayList<>();
        city1.add("南京市");
        city1.add("扬州市");
        city1.add("苏州市");
        city1.add("无锡市");
        city1.add("常州市");

        ArrayList<String> city2=new ArrayList<>();
        city2.add("武汉市");
        city2.add("孝感市");
        city2.add("十堰市");
        city2.add("宜昌市");
        city2.add("鄂州市");

        ArrayList<String> city3=new ArrayList<>();
        city3.add("石家庄市");
        city3.add("唐山市");
        city3.add("邢台市");
        city3.add("保定市");
        city3.add("张家口市");

//        创建map集合
        HashMap<String,ArrayList<String>>hm=new HashMap<>();
        hm.put("江苏省",city1);
        hm.put("湖北省",city2);
        hm.put("河北省",city3);
//        遍历map集合
        Set<Map.Entry<String, ArrayList<String>>> entries = hm.entrySet();
        for (Map.Entry<String, ArrayList<String>> entry : entries) {
            String key = entry.getKey();
            ArrayList<String> value = entry.getValue();
            StringJoiner sj=new StringJoiner(",","","");
//            遍历value得到value集合中的每一个元素city
            for (String city : value) {
                sj.add(city);
            }
            System.out.println(key+"="+sj);
        }

/*
            以下方法不妥当，需要使用StringJoiner来控制单列集合之间的符号
            StringBuilder sb=new StringBuilder();
         for (Object city:value){
             sb.append(city).append(",");
         }
            System.out.println(key+" = "+sb);
 */
               /*
//            使用StringJoiner需要在括号写写入中间，开头，结尾的符号
            StringJoiner sj=new StringJoiner(",","","");
            for (String city:value){
                sj.add(city);
            }

                */
//            System.out.println(sj);
    }
}
